/// 抄kotlin
/// https://juejin.cn/post/7231887884739543097
extension LetRunApply<T> on T {
  /// let 函数与之前的示例相同，它接受一个闭包并返回其结果。
  R let<R>(R Function(T it) block) {
    return block(this);
  }

  /// run 函数也与之前的示例相同，它接受一个闭包但不返回任何内容。
  void run(void Function(T it) block) {
    block(this);
  }

  /// apply 函数它接受一个闭包并在当前对象上执行该闭包。然后，它返回当前对象本身
  T apply(void Function(T it) block) {
    block(this);
    return this;
  }
}
